Crate decompress
source ·Expand description
Decompress an archive, supporting multiple format and stripping path prefixes
Usage
You can use the default decompress
stack:
ⓘ
#![allow(clippy::cognitive_complexity)]
use clap::{arg, command};
use decompress::ExtractOpts;
fn main() {
let matches = command!()
.arg(arg!(<archive> "Archive to extract"))
.arg(arg!(<out> "Output folder"))
.arg(arg!(
-s --strip "Strip the first component of the archive"
))
.get_matches();
let archive = matches.get_one::<String>("archive").expect("required");
let to = matches.get_one::<String>("out").expect("required");
let strip = if matches.get_flag("strip") { 1 } else { 0 };
let res = decompress::decompress(archive, to, &ExtractOpts { strip });
println!("{:?}", res);
}
Or build your own stack:
ⓘ
#![allow(clippy::cognitive_complexity)]
use clap::{arg, command};
use decompress::{decompressors, ExtractOpts};
use regex::Regex;
fn main() {
let matches = command!()
.arg(arg!(<archive> "Archive to Unzip (attempt any file)"))
.arg(arg!(<out> "Output folder"))
.arg(arg!(
-s --strip "Strip the first component of the archive"
))
.get_matches();
let archive = matches.get_one::<String>("archive").expect("required");
let to = matches.get_one::<String>("out").expect("required");
let strip = if matches.get_flag("strip") { 1 } else { 0 };
let decompressor = decompress::Decompress::build(vec![decompressors::zip::Zip::build(Some(
Regex::new(r".*").unwrap(),
))]);
let res = decompressor.decompress(archive, to, &ExtractOpts { strip });
println!("{:?}", res);
}
NOTE: to include or exclude decompressors types, use --features
and disable default.
This in turn removes or includes the (costly) dependencies these features need.
Modules
Structs
Enums
Traits
Functions
Decompress an archive with default decompressor set up